home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 42 / Amiga Format AFCD42 (Issue 126, Aug 1999).iso / -serious- / misc / cedbar / cedbar.gc < prev    next >
Text File  |  1999-05-17  |  16KB  |  594 lines

  1. G4C
  2.  
  3. ; $VER: CedBar.gc 3.5 ( by dck - 20.8.98 )
  4. ; ----------------------------------------------------------------------
  5. ; A GUI providing a toolbar for the CygnusEd text editor.
  6. ; This is a work in perpetual progress, as I use it myself..
  7. ; CygnusEd is a commercial product from ASDG Inc. (AFAIK)
  8.  
  9. ; What we do is define various icons, which we use as if they 
  10. ; were buttons and send the appropriate rexx command to $cedport, 
  11. ; which contains the name of the current CEd's arexx port.
  12.  
  13. ; According to your monitor/resolution/font etc the Icon-buttons may 
  14. ; seem too small or too big - just redesign them to your liking.
  15.  
  16. ; =======================================================================
  17.  
  18. WINBIG -1 0 625 14 "" ; note : no title - since don't want borders
  19. WinType 000010
  20. ; winbackground pattern 3 2 ; try it..
  21. varpath 'cedbar.g/cedmark.g'
  22. UseTopaz        ; because it's a non-resizable window
  23.  
  24. ; -----------------------------------------------------------
  25. ;       on loading
  26. ; -----------------------------------------------------------
  27.  
  28. xOnLoad                       ; On Loading set the default values...
  29.  
  30.     cedname = CEd     ; << **** PUT HERE THE FULL PATH OF CED ********
  31.  
  32.     cedClip = 0
  33.     cedMark = 1
  34.     cedSend = ""
  35.     cedFile = ""
  36.     newflag = 0
  37.     Update cedbar.gc 1 $cedClip
  38.     setgad cedbar.gc 20 HIDE   ; hide listview
  39.     setgad cedbar.gc 11/12 HIDE   ; hide amiga guide & launch mode icons
  40.     barmode = NORMAL     ; or GUIDE - can add more..
  41.     GuiClose cedbar.g       ; Close the small window (if it was open)
  42.  
  43.     gosub cedbar.gc StartUpCed      ; See which ced is calling us
  44.     if $$sys.fsn[0][6] != 'Cygnus'  ; if we are called from an other screen
  45.        cedscreen = CygnusEdScreen   ; get the 1st ced's screen name
  46.        instance = $cedport[-1][1]
  47.        if $instance > 0
  48.        and $instance <= 9
  49.            appvar cedscreen $($instance + 1) 
  50.        else
  51.            appvar cedscreen 1 
  52.        endif
  53.  
  54. ;         work around... (screen name is converted to capitals & not found..)
  55. ;       guiscreen #$cedscreen front  ; force ced to front !!! doesn't work !!!
  56.         setscreen #this $cedscreen
  57.         guiopen cedbar.gc
  58.         guiscreen #this front
  59.         setscreen #this '*'
  60.  
  61.     else
  62.         GuiOpen  cedbar.gc
  63.     endif
  64.  
  65.     GuiLoad :cedbar.g    ; the small bar
  66.     GuiLoad :cedMark.g      ; the Mark Set/Go window
  67.     GuiLoad :cedclip.g      ; clipboard viewer
  68.     guiload :filereq.gc        ; the file requester
  69.  
  70.     ; see under which ced we're running..
  71.     info gui cedbar.gc
  72.     cedscreen = $$win.screen
  73.     cedport = rexx_ced
  74.     if $cedscreen[0][6] == 'Cygnus'   ; make sure it's a ced pubscreen
  75.        instance = $cedscreen[-1][1]   ; get last letter
  76.        if $instance > 1
  77.        and $instance <= 9        ; adjust port name (if needed)
  78.            appvar cedport $($instance - 1) 
  79.        endif
  80.     endif
  81.  
  82.     ; find & load the Gui4Cli extension which provides us with 
  83.     ; extra commands we can use with the CALL command
  84.     ifexists port LVFormat
  85.        call LVFormat Register         ; notify it that we want it too
  86.     else
  87.        ; look in our dir..
  88.        extract cedbar.gc guipath mypath
  89.        joinfile $mypath lvformat progname
  90.        joinfile $progname lvformat progname
  91.        ifexists file $progname
  92.           run $progname
  93.        elseifexists file guis:ext/lvformat/lvformat
  94.           run guis:ext/lvformat/lvformat
  95.        else
  96.           ezreq 'Could not find LVFormat!' OK ''
  97.        endif
  98.     endif
  99.  
  100. ; -----------------------------------------------------------
  101. ;       ending events
  102. ; -----------------------------------------------------------
  103.  
  104. xONQuit
  105.     GuiQuit cedbar.g        ; unload all the other GUIs
  106.     GuiQuit cedmark.g
  107.     guiquit cedclip.g
  108.     guiquit addlink.g
  109.     guiquit addeffect.g
  110.     guiquit addnode.g
  111.     guiquit indent.g
  112.     guiquit wrap.g
  113.     guiquit filereq.gc
  114.     ifexists port LVFormat  ; quit out handler
  115.        call LVFormat quit
  116.     endif
  117.     ifexists file t:tempnode
  118.        delete t:tempnode
  119.     endif
  120.  
  121.     xonfail
  122.        guiwindow cedbar.gc resume
  123.  
  124. ; -----------------------------------------------------------
  125. ;       Routine - Find ced
  126. ; -----------------------------------------------------------
  127.  
  128. xRoutine StartUpCed
  129.     local count
  130.     count = 1
  131.  
  132.     portname = rexx_ced
  133.  
  134.     ; look for any instance of ced
  135.     ifexists port ~rexx_ced
  136.        while $count < 10
  137.           IfExists PORT 'rexx_ced$count'
  138.              portname = 'rexx_ced$count'
  139.              return
  140.           endif
  141.           ++count
  142.        endwhile
  143.     else
  144.        return
  145.     endif
  146.  
  147.     run '$cedname'    ; not found - start it up
  148.     Wait PORT rexx_ced 30   ; wait for ced to load
  149.     if $$RETCODE > 0
  150.        ezreq "CygnusEd was not found!" EXIT ""
  151.        GuiQuit cedbar.gc
  152.        Stop
  153.     endif
  154.     Wait SCREEN CygnusEdScreen1 30     ; if Screen does not open, use WB
  155.     portname = rexx_ced
  156.  
  157. ; -----------------------------------------------------------
  158. ;       window handling events
  159. ; -----------------------------------------------------------
  160.  
  161. xOnRMB              ; rotate the last 8 buttons
  162.     ; GuiClose cedbar.gc
  163.     ; GuiOpen cedbar.g
  164.     gosub cedbar.gc guichange
  165.  
  166. XICON 2 0 :icons/wnClose   ; the Q icon
  167.     ezreq "Last chance..\nQuit ?" YES|CANCEL choice
  168.     if $choice = 1
  169.        GuiQuit cedbar.gc
  170.     endif
  171.  
  172. XICON 15 1 :icons/right    ; the > icon togle big/small windows
  173.     GuiClose cedbar.gc
  174.     GuiOpen cedbar.g
  175.  
  176. ; -----------------------------------------------------------
  177. ;       New file
  178. ; -----------------------------------------------------------
  179.  
  180. XICON 30 0 :icons/New
  181.     SendRexx $cedport "open new"
  182.  
  183. ; -----------------------------------------------------------
  184. ;       Open file
  185. ; -----------------------------------------------------------
  186. ; ----- use "filereq.gc" (if it exists in our dir - else ASL)
  187.  
  188. XICON 55 0 :icons/Open
  189.     newflag = 1     ; set flag to know that we pressed the open button
  190.     extract cedbar.gc guipath frqpath
  191.     joinfile $frqpath filereq.gc frq
  192.     joinfile $frqpath CedFav fav
  193.     ifexists file $frq
  194.         ; get the current filename so we can get it's path
  195.         sendrexx $cedport 'status filename'
  196.         filename = $$rexxret
  197.         extract filename path path
  198.         ; load & open fireq.gc
  199.         extract frq unquote frq
  200.         guiload $frq cedbar.gc LoadFile $cedbar.gc/path $fav
  201.     else
  202.         ; if no filereq.gc open normally
  203.         SendRexx $cedport "open"
  204.     endif
  205.  
  206. ; ----- the routine that will be called from filereq.gc for *every*
  207. ;       file chosen in it's listview
  208.  
  209. xroutine LoadFile filename
  210.     ; if there have been changes made or it's an existing file - open a new file
  211.     sendrexx $cedport 'status numchanges'
  212.     changes = $$rexxret
  213.     if $newflag = 0
  214.     or $changes > 0
  215.        SendRexx $cedport "open new"
  216.     endif
  217.     newflag = 0   ; set flag = all next files (multiselected) => open new view
  218.     SendRexx $cedport 'open $filename'
  219.  
  220. ; ------ add current path to the filename - store it in cedbar.gc/fn
  221.  
  222. xroutine makefile fn
  223.     local pth
  224.     extract cedbar.gc guipath pth
  225.     joinfile $pth $fn fn
  226.  
  227.  
  228. ; -----------------------------------------------------------
  229. ;       View handling icons
  230. ; -----------------------------------------------------------
  231.  
  232. XICON 80 0 :icons/Big
  233.     SendRexx $cedport "expand view"
  234.  
  235. ; -----------------------------------------------------------
  236. ;       Save as.., Save
  237. ; -----------------------------------------------------------
  238.  
  239. XICON 95 0 :icons/saveas
  240.     SendRexx $cedport "save as"
  241.  
  242. XICON 120 0 :icons/save
  243.     SendRexx $cedport "save"
  244.  
  245. ; -----------------------------------------------------------
  246. ;       Quit
  247. ; -----------------------------------------------------------
  248.  
  249. XICON 145 0 :icons/quit
  250.     ; get information
  251.     sendrexx $cedport 'status numchanges'
  252.     changes = $$rexxret
  253.     sendrexx $cedport 'status filename'
  254.     filename = $$rexxret
  255.     sendrexx $cedport 'status totalnumviews'
  256.     views = $$rexxret
  257.     if $changes > 0
  258.        ezreq '$changes changes have been made.\nQuit $filename ?\n' 'Quit|Save & Quit|CANCEL' choice
  259.        if $choice = 0
  260.           stop
  261.        elseif $choice = 2
  262.           SendRexx $cedport "save"
  263.           ; we will quit later..
  264.        endif
  265.     endif
  266.     if $views = 1   ; this is the last file - give him one more chance..
  267.        ezreq 'Really quit ?' "Quit!|CANCEL" choice
  268.        if $choice = 0
  269.           stop
  270.        endif
  271.        ; the guy just won't listen to reason..
  272.        guiclose cedbar.gc   ; close window so ced can quit
  273.        guiclose cedmark.g
  274.        guiquit cedbar.gc    ; and quit.. (after all commands have executed)
  275.     endif
  276.     SendRexx $cedport "quit"
  277.  
  278. ; -----------------------------------------------------------
  279. ;       Cut & Paste
  280. ; ---------------